class Dictionary {
    constructor() {
        this.items = {}
    }
    //判断某个键值存在于这个字典中
    has(key) {
        return key in this.items;
    };

    //添加新元素
    set(key, value) {
        this.items[key] = value; //value设为items对象的key属性的值
    };

    //通过使用键值来从字典中移除键值对应的数据值
    delete(key) {
        if (this.has(key)) {
            delete this.items[key];
            return true;
        }
        return false;
    };

    //字典中查找一个特定的项
    get(key) {
        return this.has(key) ? this.items[key] : undefined;
    };

    //字典所包含的所有数值以数组形式返回
    values() {
        var values = [];
        for (var k in this.items) { //遍历数组
            if (this.has(k)) {
                values.push(this.items[k]); //如果存在，加入数组中
            }
        }
        return values;
    };

    //返回在Dictionary类中所有用于标识值的键名
    keys() {
        return Object.keys(this.items);
    };

    //items属性的输出值
    getItems() {
        return this.items;
    };

    //移除集合中的所有项
    clear() {
        this.items = {}; // 直接制空
    };

    //返回集合所包含元素的数量。 与数组的length属性类似。
    size() {
        return Object.keys(this.items).length; //返回长度
    };
}

module.exports = Dictionary